var express = require('express');
var router = express.Router();
var crypto = require('crypto');
var User = require('../modules/user.js');
var Post = require('../modules/post.js');

router.get('/', function (req, res) {
    Post.get(null, function (err, posts) {
        if (err) {
            posts = null;
        }

        res.render('index', {
            title: '首页',
            posts:posts
        });
    });
});

router.get('/u/:user', function (req, res) {
    User.get(req.params.user, function (err, user) {
        console.log("----------------------------")
        console.log(user);
        console.log("----------------------------")
        if(!user) {
            req.flash('error', '用户不存在***');
            return res.redirect('/');
        }

        Post.get(user.name, function (err, posts) {
            if (err) {
                req.flash('error', err);
                return res.redirect('/');
            }
            res.render('user', {
                title: user.name,
                posts: posts
            });
        });
    });
});

router.post('/post', checkLogin);

router.post('/post', function (req, res) {
    var currentUser = req.session.user;
    console.log("99999999999999999999");
    console.log(currentUser);
    console.log("99999999999999999999");

    var post = new Post(currentUser.name, req.body.post);

    post.save(function (err) {
        if (err) {
            req.flash('error', err);
            return res.redirect('/');
        }

        req.flash('success', '发表成功');

        console.log(currentUser);
        res.redirect('/u/'+currentUser.name);
    });
});


router.get('/reg', checkNotLogin);

router.get('/reg', function (req, res) {
    res.render('reg', {
        title:'用户注册'
    });
});

router.post('/reg', checkNotLogin);
router.post('/reg', function (req, res) {
    console.log(req.body);
    //检验用户两次输入的口令是否一致
    if (req.body['password-repeat'] != req.body['password']) {
        req.flash('error', '');
        return res.redirect('/reg');
    }

    // 生成口令的散列值
    var md5 = crypto.createHash('md5');
    var password = md5.update(req.body.password).digest('base64');

    var newUser = new User({
        name: req.body.username,
        password: password
    });

    User.get(newUser.name, function (err, user) {
        if(user) {
            err = 'Username already exists';
        }

        if (err) {
            req.flash('error', err);
            console.log(err);
            return res.redirect('/reg');
        }

        console.log("save");
        newUser.save(function (err) {
           if (err) {
               req.flash('error', err);
               console.log('save err');
               console.log(err);
               return res.redirect('/reg');
           }
           req.session.user = newUser;
           req.flash('success', '注册成功');
           return res.redirect('/');
        });
    })

});

router.get('/login', checkNotLogin);
router.get('/login', function (req, res) {
    res.render('login', {
        title: '用户登入'
    });
});

router.post('/login', checkNotLogin);
router.post('/login', function (req, res) {
    //生成口令的散列值
    var md5 = crypto.createHash('md5');
    var password = md5.update(req.body.password).digest('base64');

    User.get(req.body.username, function (err, user) {
        if (!user) {
            req.flash('error', '用户不存在');
            return res.redirect('/login');
        }

        if (user.password != password) {
            req.flash('error', '用户口令错误');
            return res.redirect('/login');
        }
        console.log(req.body.username);
        req.session.user = user;
        req.flash('success', '登入成功');
        res.redirect('/');
    });
});

router.get('/logout', checkLogin);
router.get('/logout', function (req, res) {
    req.session.user = null;
    req.flash('success', '登出成功');
    res.redirect('/');
});

function checkLogin(req, res, next) {
    if (!req.session.user) {
        req.flash('error', '未登入');
        return res.redirect('/login');
    }
    next();
}

function checkNotLogin(req, res, next) {
    if (req.session.user) {
        req.flash('error', '已登入');
        return res.redirect('/');
    }
    next();
}

/*
/!* GET home page. *!/
router.get('/', function (req, res, next) {
    res.render('index', {title: 'Express'});
});

router.get('/hello', function (req, res, next) {
    res.send('The time is ' + new Date().toString());
});

// router.get('/helper', function (req, res) {
//     res.render('helper', {title: 'Helpers'})
// });

router.get('/u/:user', function (req, res, next) {

});

router.post('/post', function (req, res, next) {

});

router.get('/reg', function (req, res, next) {

});

router.post('/reg', function (req, res, next) {

});

router.get('/login', function (req, res, next) {

});

router.post('/login', function (req, res, next) {

});

router.get('/logout', function (req, res, next) {

});*/

/*
module.exports = function (app) {
    app.get('/', function (req, res, next) {
        res.render('index', {title: 'Express'});
    });
};*/


module.exports = router;
